/** bcmi_frame Stream Reader defination.
 *
 *  bcmi_frame Stream Reader defination. This file is the interface which user call reader.
 *
 *  @author : huicong
 *  @date : 2008-10-27
 *
 */

#ifndef _STREAM_READER_H
#define _STREAM_READER_H

namespace bcmi_frame
{

    /** Basic stream reader. User info will read frome this class. 
     * 
     *  //UNDO
     *
     */
    VIRTUAL_CLASS class StreamReader
    {
    public:

        StreamReader()
        {
        }

        virtual ~StreamReader()
        {
        }


    public:

        /** Major read function. Read data into _buf from this class.
        *
        *  Major read function. Read data into _buf from this class.
        *
        *  @param [OUT] VOID* _buf : the buffer which will contain the data.
        *  @param [IN] UINT _size : the length will read from this reader.
        *  @param [OUT] UINT &_actualSize : the actual lenght be read from this reader.
        *  @return HRESULT : the result which show whether this function works well.
        *
        */
        virtual HRESULT read(OUT VOID* _buf, IN UINT _size, OUT UINT &_actualSize) = 0;

 
    };

};//namespace bcmi_frame

#endif //#ifndef _STREAM_READER_H